package com.gxa.service;

import com.gxa.exception.CustomerException;
import com.gxa.pojo.Patient;
import com.gxa.util.QueryInfo;

import java.util.List;
import java.util.Map;

/**
 * Created with IntelliJ IDEA
 * User: bear
 * Date: 2020/09/22
 * Description
 * Version: V1.0
 */
public interface PatientService {
    /**
     * 注册患者账号
     * @param patient 用户信息
     * @return  返回是否成功
     */
    public boolean addPatient(Patient patient) throws CustomerException;

    /**
     * 登录操作
//     * @param username  用户名
//     * @param password  密码
     * @return  返回登录信息
     */
    public Patient login(Map<String,Object> map) throws CustomerException;

    /**
     * 添加新患者
     * @param patient    患者信息
     * @return  返回受影响行数
     */
    public Integer insert(Patient patient);

    /**
     * 通过id查找
     * @param id 患者id
     * @return  返回id查询的患者信息
     */
    public Patient findById(Integer id);


    /**
     * 通过地址查询地区患病数量
     * @param address 地址
     * @return  返回地区患病总数量
     */
    public Integer findByAddress(String address);

    /**
     * 通过医生id查询已关注患者
     * @param doctorId 医生id
     * @return  返回医生所有关注的患者
     */
    public List<Patient> findByDoctorId(Integer doctorId);

    /**
     * 查询所有患者信息
     * @return  返回查询到的所有患者信息
     */
    public List<Patient> findAll();

    /**
     * 分页查询
     * @param queryInfo 分页信息
     * @return  分页查询结果
     */
    public List<Patient> findByPage(QueryInfo queryInfo);

    /**
     * 修改患者个人信息
     * @param patient 患者信息
     * @return  返回受影响行数
     */
    public Integer update(Patient patient);

    /**
     * 添加账户核桃币数额
     * @param acount  核桃币数额
     * @return  返回受影响行数
     */
    public Integer addAcount(Integer acount,Integer id);

    /**
     * 扣除账户核桃币
     * @param acount  核桃币数额
     * @return  返回受影响行数
     */
    public Integer deductAcount(Integer acount,Integer id);
}
